package com.government.org.service;

import java.util.List;

import com.government.app.bo.KeywordSearchBO;
import com.government.app.bo.KeywordSearchDetailsBO;
import com.government.app.vo.KeywordSearchDetailsVO;
import com.government.app.vo.KeywordSearchVO;
import com.government.common.core.domain.BaseTreeVo;
import com.government.org.bo.OrgInfoBO;
import com.government.org.domain.OrgInfo;
import com.government.org.vo.OrgInfoVO;
import com.government.org.vo.OrgTreeVO;

/**
 * 主管单位Service接口
 * 
 * @author system
 * @date 2023-09-14
 */
public interface IOrgInfoService 
{
    /**
     * 查询主管单位
     * 
     * @param orgId 主管单位主键
     * @return 主管单位
     */
    public OrgInfo selectOrgInfoByOrgId(Long orgId);

    /**
     * 查询主管单位列表
     * 
     * @param orgInfo 主管单位
     * @return 主管单位集合
     */
    public List<OrgInfoVO> selectOrgInfoList(OrgInfoBO orgInfo);

    /**
     * 查询主管单位列表
     *
     * @param orgInfo 主管单位
     * @return 主管单位集合
     */
    public List<OrgTreeVO> getAll();

    /**
     * 查询主管单位列表
     *
     * @param orgInfo 主管单位
     * @return 主管单位集合
     */
    public List<OrgInfo> getAllOrgList();


    /**
     * 新增主管单位
     * 
     * @param orgInfo 主管单位
     * @return 结果
     */
    public int insertOrgInfo(OrgInfoBO orgInfo);

    /**
     * 修改主管单位
     * 
     * @param orgInfo 主管单位
     * @return 结果
     */
    public int updateOrgInfo(OrgInfo orgInfo);

    /**
     * 批量删除主管单位
     * 
     * @param orgIds 需要删除的主管单位主键集合
     * @return 结果
     */
    public int deleteOrgInfoByOrgIds(Long[] orgIds);

    /**
     * 删除主管单位信息
     * 
     * @param orgId 主管单位主键
     * @return 结果
     */
    public int deleteOrgInfoByOrgId(Long orgId);

    /**
     * 搜索部门
     * @param bo
     * @return
     */
    List<KeywordSearchVO> selectOrgList(KeywordSearchBO bo);

    /**
     * 搜索部门详情
     * @param bo
     * @return
     */
    KeywordSearchDetailsVO selectOrgDetails(KeywordSearchDetailsBO bo);

    /**
     * 获取部门所属树
     * @param orgId
     * @return
     */
    List<BaseTreeVo> getParentOrgTree(Long orgId);

    /**
     * 部门下的所属政策
     * @param orgId
     * @return
     */
    List<BaseTreeVo> findOrgPolicy(Long orgId);

    /**
     * 浏览数添加
     *
     * @param orgId 政策分类信息主键
     * @return 结果
     */
    void browseNumAdd(Long orgId);
}
